#pragma once

#include "MBEnums.h"

/**
  *	The MBWeightMethodeManager 
  * Methods:
  * MB_REAL_TO_PROJECTED_AREA_RATIO = 0
  * MB_SQUARED_SINE_VIEW_NORMAL = 1
  */
class MBWeightMethodManager
{
public:

	static MBWeightMethodManager &Get( void );
	MBWeightMethod GetCurrentMethod( void ) const;
	void SetCurrentMethod( MBWeightMethod method );
	/** get the threshold of the current method */
	double GetCurrentMethodWeightInfinity( void ) const;
	/** get the threshold of the given method */
	double GetMethodWeightInfinity( MBWeightMethod method ) const;

private:
	MBWeightMethodManager( void );
	~MBWeightMethodManager( void );
	/** The weight methode manager himself */
	static MBWeightMethodManager *weightmethodManager;
	MBWeightMethod mCurrentMethod;

	// thresholds for the separate weight methods
	static double MB_REAL_TO_PROJECTED_AREA_RATIO_WEIGHT_INFINITY;
	static double MB_SQUARED_SINE_VIEW_NORMAL_WEIGHT_INFINITY;
};